\section{Ejecución de procesos en Background}

\noindent
\textbf{Crear el siguiente programa:}
 \begin{verbatim}
        /usr/src/loop.c" 
        #include <stdio.h>
  
        int main(){ 
            int i, c; 
            while(1){
              c = 48 + i;
              printf(\%" "d" ", c)
              i++;"
              i = i % idgrupo;
            }
        }
 \end{verbatim}
\noindent
\textbf{Compilarlo. El programa compilado debe llamarse loop, indicando a la macro idgrupo el valor de su grupo.}
\begin{verbatim}
# cc -o loop loop.c
"loop.c", line 5: (warning) 'main' old-fashioned function definition 
\end{verbatim}

\begin{enumerate}
    \item \textbf{Correrlo en foreground. ?`Que sucede ? Mate el proceso con el comando kill.}
\begin{verbatim}
 # ./loop
\end{verbatim}
Devuelve una serie infinita de ``4948''.
Cambiamos de terminal con $Alt+F1$. Una vez allí, con:
\begin{verbatim}
# ps
\end{verbatim}
vemos que el pid del proceso es 81 y con:
\begin{verbatim}
# kill 81
\end{verbatim}
lo terminamos.
    \item \textbf{Ahora ejecútelo en background}\\
\begin{verbatim}
./loop > /dev/null & 
\end{verbatim}
\textbf{?`Qué se muestra en la pantalla ?}\\

No se muestra nada en pantalla, sólo el prompt. El programa está corriendo, como en el caso anterior, pero su salida está siendo desechada. \\

\textbf{?`Qué sucede si presiona la tecla F1? ?`Qué significan esos datos ?}\\

  La tecla F1 muestra información sobre los procesos en ejecución, da la tabla de procesos:
 
\begin{center}

	\begin{tabular}{|l|l|}
		\hline
		pid &Id del proceso\\
		\hline
		pc & Program Counter del proceso\\
		\hline
		sp & Stack Pointer del proceso\\
		\hline
		ag & Flags del proceso\\
		\hline
		user& Tiempo de ejecución en modo usuario\\
		\hline
		sys &Tiempo de ejecución en modo sistema\\
		\hline
		text& Tamaño del segmento de texto (código)\\
		\hline
		data& Tamaño del segmento de datos\\
		\hline
		size& Tamaño del proceso\\
		\hline
		command& El comando que se ejecutó \\
		\hline
	\end{tabular} 

\end{center}
	\begin{figure}[p!hbt]
		\centering
	\includegraphics[width=0.75\textwidth]{img/F1.png}
	\caption{Resultado de presionar la tecla F1}
	\label{fig:F1}
	\end{figure}



   La tecla F2 muesta información sobre la asignación de memoria física a los procesos. Por cada proceso muestra
la dirección en memoria virtual, la dirección en memoria física, y el tamaño de cada una de las secciones (text, data y
stack ). Además, muestra el espacio total ocupado por el proceso.
 
\begin{center}
	\begin{tabular}{|l|l|}
		\hline
		proc & Numero que referencia el orden de inicio de los procesos\\
		\hline
		Name& Nombre del proceso\\
		\hline
		text& Tamaño del segmento de texto (código)\\
		\hline
		data& Tamaño del segmento de datos\\
		\hline
		stack& Tamaño del segmento de stack\\
		\hline
		size& Tamaño del proceso\\
		\hline
	\end{tabular} 
\end{center}


\textbf{?`Qué sucede si presiona la tecla F2? ?`Qué significan esos datos ?}\\

	\begin{figure}[p!hbt]
			\centering
			\includegraphics[width=0.75\textwidth]{img/F2.png}
			\caption{Resultado de presionar la tecla F2}
	         	\label{fig:F2}
	\end{figure}

\end{enumerate}
Algo interesante que notamos es que F1 y F2 solo funcionan en la consola 1.



\newpage

